688E - The Values You Can Make - CodeForces Solution


dp *1900

Please click on ads to support us..

C++ Code:

#include <iostream>
#include <vector>

#define pb push_back

using namespace std;

int n, k;
int a[1000];
bool dp[510][510][510];
int main(){
    cin >> n >> k;
    for (int i = 1; i <= n; ++i){
        cin >> a[i];
    }

    dp[0][0][0] = 1;
    for (int i = 1; i <= n; ++i){
        for (int j = 0; j <= k; ++j){
            for (int p = 0; p <= j; ++p){
                dp[i][j][p] |= dp[i - 1][j][p];
                if (j >= a[i]){
                    dp[i][j][p] |= dp[i - 1][j - a[i]][p];
                }
                if (j >= a[i] && p >= a[i]){
                    dp[i][j][p] |= dp[i - 1][j - a[i]][p - a[i]];
                }
            }
        }
    }

    vector<int> x;
    for (int i = 0; i <= k; ++i){
        if (dp[n][k][i]){
            x.pb(i);
        }
    }
    cout << (int)x.size() << '\n';
    for (auto it : x){
        cout << it << " ";
    }
}/*1687991988.8299892*/


Comments

Submit
0 Comments
More Questions

2144. Minimum Cost of Buying Candies With Discount
Non empty subsets
1630A - And Matching
1630B - Range and Partition
1630C - Paint the Middle
1630D - Flipping Range
1328A - Divisibility Problem
339A - Helpful Maths
4A - Watermelon
476A - Dreamoon and Stairs
1409A - Yet Another Two Integers Problem
977A - Wrong Subtraction
263A - Beautiful Matrix
180C - Letter
151A - Soft Drinking
1352A - Sum of Round Numbers
281A - Word Capitalization
1646A - Square Counting
266A - Stones on the Table
61A - Ultra-Fast Mathematician
148A - Insomnia cure
1650A - Deletions of Two Adjacent Letters
1512A - Spy Detected
282A - Bit++
69A - Young Physicist
1651A - Playoff
734A - Anton and Danik
1300B - Assigning to Classes
1647A - Madoka and Math Dad
710A - King Moves